非永続モードでXLAを初期化した後、ttXlaConfigBuffer関数を使用して、XLAステージング・バッファのサイズを設定します。1つのステージング・バッファのみが1つのデータ・ストアに対して設定できます。ステージング・バッファのサイズの設定は、通常の切断の場合は保持されます。ただし、このサイズ設定は、チェックポイント処理が行われているかどうかによっては、異常終了した場合に保持されない可能性があります。
ステージング・バッファのサイズを選択する場合は、バッファを小さく設定しすぎると、TimesTenの更新でバッファがいっぱいとなり、それ以上の更新が拒否されることを考慮してください。また、バッファに大量の領域を割り当てすぎると、メモリーが浪費されます。
ステージング・バッファのサイズを設定するには、ttXlaConfigBufferのnewSizeパラメータに値を、oldSizeパラメータにNULLを指定します。oldSizeには、ステージング・バッファの以前のサイズが返されます。
たとえば、ステージング・バッファのサイズを400,000バイトに設定するには、次のように入力します。
SQLUBIGINT oldsz, newsz
newsz = 400000;
rc = ttXlaConfigBuffer(xla_handle, &oldsz, &newsz);
printf("The old size of the XLA buffer is %d\n",(int)oldsz);
printf("The new size of the XLA buffer is %d\n",(int)newsz);
ステージング・バッファのサイズは、設定後、随時サイズ変更できます。ただし、サイズ変更を行うと、現在のバッファがコピーされるため、大幅にパフォーマンスが低下する場合があります。より小さいサイズをステージング・バッファに指定し、その小さいサイズに現在の内容を格納できない場合、ステージング・バッファは変更されず、エラーが返されます。
注意: | ステージング・バッファのサイズの変更はすぐに実行されます。バッファのサイズが変更されると、ttXlaNextUpdateまたはttXlaNextUpdateWaitへの以前のコールによって返したレコードは無効になります。 |
また、ttXlaConfigBuffer関数を使用すると、ステージング・バッファの現在のサイズを取得できます。現在のバッファ・サイズを取得するには、newSizeにNULLを指定します。ステージング・バッファの現在のサイズはoldSizeに返されます。次に例を示します。
rc = ttXlaConfigBuffer(xla_handle, &oldsz, NULL);
printf("The old size of the XLA buffer is %d\n",(int)oldsz);
XLAの使用を終了した後、サイズを0(ゼロ)に設定してステージング・バッファを削除できます。次に例を示します。
newsz = 0;
rc = ttXlaConfigBuffer(xla_handle, NULL &newsz);
注意: | XLAステージング・バッファが0(ゼロ)以外のサイズに設定され、XLAリーダーが接続されていない場合、データ・ストアへの更新はバッファに書き込まれます。ステージング・バッファがいっぱいになると、ユーザーがステージング・バッファを削除(サイズを0(ゼロ)に設定)するか、またはXLAリーダーを接続してバッファからの読取りを開始するまで、データベース処理を正常に完了することはできません。 |